/*================================================================
*   Copyright (C) 2017 LiuYao. All rights reserved.
*   
*   Filename : op.h
*   Author : LiuYao
*   Date : 2017-11-27
*   Description : 
*
================================================================*/
#ifndef _OP_H
#define _OP_H

#include "../node.h"

class OpNode : public Node{
    public:
        OpNode(const vector<Node*>& nodes) : Node(nodes) {}
        virtual ~OpNode() = default;

        // generate the gradient nodes
        virtual vector<Node*> getGradNodes(Node* ) = 0;

        bool isVariable() const { return false; }
        bool isConstant() const { return false; }
        bool isOp() const { return true; }
        bool isPlaceholder() const { return false; }
        bool isOptimizer() const { return false; }
};
#endif
